#include <iostream>
using namespace std;

#if 0
class Test
{
public:
    Test() = default;
    ~Test() = default;
    Test(const Test& t) = default;
    Test(Test&& t) = default;
    Test& operator=(const Test& t) = default;
    Test& operator=(Test&& t) = default;
    Test() {}
};

class Test1
{
public:
    Test1();
    Test1(const Test1& t) = delete;
    Test1& operator=(const Test1& t) = delete;
    //void print() = default;
    void print(int num)
    {
        cout << num << endl;
    }
    void print(char c) = delete;
};
Test1::Test1() = default;

int main()
{

    /*
    这段代码主要展示了 C++ 中类的构造函数、析构函数、复制构造函数、移动构造函数、复制赋值运算符、移动赋值运算符的默认生成和删除操作。
对于 Test 类，使用 = default 让编译器自动生成各种函数，实现默认行为。
对于 Test1 类，使用 = delete 禁止复制构造函数和复制赋值运算符，以防止对象的复制操作，同时展示了函数重载和函数删除的使用，如 print 函数的不同重载和 print(char c) 的删除操作。
主函数中展示了对 Test1 类对象的创建和成员函数的调用，同时注释了会导致编译错误的复制操作代码，体现了对类对象复制的限制。
    
    
    */
    Test1 t;
    t.print(100);
    t.print('a');
    //Test1 tt(t);
    //Test1 t2 = t;
    //t2 = t;
    return 0;
}
#endif